require 'singleton'
require 'model/eleitor'
require 'model/eleitor_dao'
require 'model/eleicao_dao'
require 'model/candidato'
require 'controller/poller_exception'

class EleitorBo
  
  include Singleton

  def initialize
    
  end

=begin
Author  : atila camurca
Date    : 09/05/2010
Version : 1.0
Return  : #self
Description
   Valida o voto de um determinado eleitor.
=end
  def votar( eleitor, candidato)
    EleitorDao.instance.votar(eleitor, candidato)
  end

  def permitir_votar?( eleitor )
    if EleitorDao.instance.votou?(eleitor.titulo)
      false
    else
      true
    end
  end

  def eleitor_valido?( eleitor )
    EleitorDao.instance.find?(eleitor.titulo)
  end

  def save eleitor
    id_eleicao = EleicaoDao.instance.find_ultima_eleicao
    if id_eleicao.nil?
      obj = EleitorDao.instance.save(eleitor.nome)
      return obj
    elsif not EleicaoDao.instance.eleicao_em_andamento?
      obj = EleitorDao.instance.save(eleitor.nome)
      return obj
    else
      return PollerException.instance.throw(nil, "[BO] Eleição em andamento.")
    end
  end

end
